package cpsobras.pessoa;

import javax.persistence.DiscriminatorColumn;
import javax.persistence.DiscriminatorType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.Table;

@Entity
@Table(name="tab_pessoa")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="ide_tipo_pessoa", discriminatorType=DiscriminatorType.STRING)
public abstract class Pessoa {
	
	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	private Integer cod_pessoa;
	private String des_nome_razao;
	private String des_endere;
	private String des_comple;
	private String des_bairro;
	private String cod_estado;
	private String des_cidade;
	private String cod_cep;
	private String des_fone;
	private String des_celula;
	private String des_fone2;
	private String des_pessoa_contat;
	private String des_email;
	private String ide_tipo_cadast;
	private boolean ide_inativ;

	public Integer getCod_pessoa() {
		return cod_pessoa;
	}
	public void setCod_pessoa(Integer cod_pessoa) {
		this.cod_pessoa = cod_pessoa;
	}
	public String getDes_endere() {
		return des_endere;
	}
	public void setDes_endere(String des_endere) {
		this.des_endere = des_endere;
	}
	public String getDes_bairro() {
		return des_bairro;
	}
	public void setDes_bairro(String des_bairro) {
		this.des_bairro = des_bairro;
	}
	public String getCod_estado() {
		return cod_estado;
	}
	public void setCod_estado(String cod_estado) {
		this.cod_estado = cod_estado;
	}
	public String getDes_cidade() {
		return des_cidade;
	}
	public void setDes_cidade(String des_cidade) {
		this.des_cidade = des_cidade;
	}
	public String getCod_cep() {
		return cod_cep;
	}
	public void setCod_cep(String cod_cep) {
		this.cod_cep = cod_cep;
	}
	public String getDes_fone() {
		return des_fone;
	}
	public void setDes_fone(String des_fone) {
		this.des_fone = des_fone;
	}
	public String getDes_celula() {
		return des_celula;
	}
	public void setDes_celula(String des_celula) {
		this.des_celula = des_celula;
	}
	public String getDes_fone2() {
		return des_fone2;
	}
	public void setDes_fone2(String des_fone2) {
		this.des_fone2 = des_fone2;
	}
	public String getDes_pessoa_contat() {
		return des_pessoa_contat;
	}
	public void setDes_pessoa_contat(String des_pessoa_contat) {
		this.des_pessoa_contat = des_pessoa_contat;
	}
	public String getDes_email() {
		return des_email;
	}
	public void setDes_email(String des_email) {
		this.des_email = des_email;
	}
	public String getIde_tipo_cadast() {
		return ide_tipo_cadast;
	}
	public void setIde_tipo_cadast(String ide_tipo_cadast) {
		this.ide_tipo_cadast = ide_tipo_cadast;
	}
	public String getDes_nome_razao() {
		return des_nome_razao;
	}
	public void setDes_nome_razao(String des_nome_razao) {
		this.des_nome_razao = des_nome_razao;
	}
	public String getDes_comple() {
		return des_comple;
	}
	public void setDes_comple(String des_comple) {
		this.des_comple = des_comple;
	}
	public boolean isIde_inativ() {
		return ide_inativ;
	}
	public void setIde_inativ(boolean ide_inativ) {
		this.ide_inativ = ide_inativ;
	}
	public boolean isStatus() {
		return ide_inativ;
	}
	
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((cod_cep == null) ? 0 : cod_cep.hashCode());
		result = prime * result
				+ ((cod_estado == null) ? 0 : cod_estado.hashCode());
		result = prime * result
				+ ((cod_pessoa == null) ? 0 : cod_pessoa.hashCode());
		result = prime * result
				+ ((des_bairro == null) ? 0 : des_bairro.hashCode());
		result = prime * result
				+ ((des_celula == null) ? 0 : des_celula.hashCode());
		result = prime * result
				+ ((des_cidade == null) ? 0 : des_cidade.hashCode());
		result = prime * result
				+ ((des_comple == null) ? 0 : des_comple.hashCode());
		result = prime * result
				+ ((des_email == null) ? 0 : des_email.hashCode());
		result = prime * result
				+ ((des_endere == null) ? 0 : des_endere.hashCode());
		result = prime * result
				+ ((des_fone == null) ? 0 : des_fone.hashCode());
		result = prime * result
				+ ((des_fone2 == null) ? 0 : des_fone2.hashCode());
		result = prime * result
				+ ((des_nome_razao == null) ? 0 : des_nome_razao.hashCode());
		result = prime
				* result
				+ ((des_pessoa_contat == null) ? 0 : des_pessoa_contat
						.hashCode());
		result = prime * result + (ide_inativ ? 1231 : 1237);
		result = prime * result
				+ ((ide_tipo_cadast == null) ? 0 : ide_tipo_cadast.hashCode());
		return result;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Pessoa other = (Pessoa) obj;
		if (cod_cep == null) {
			if (other.cod_cep != null)
				return false;
		} else if (!cod_cep.equals(other.cod_cep))
			return false;
		if (cod_estado == null) {
			if (other.cod_estado != null)
				return false;
		} else if (!cod_estado.equals(other.cod_estado))
			return false;
		if (cod_pessoa == null) {
			if (other.cod_pessoa != null)
				return false;
		} else if (!cod_pessoa.equals(other.cod_pessoa))
			return false;
		if (des_bairro == null) {
			if (other.des_bairro != null)
				return false;
		} else if (!des_bairro.equals(other.des_bairro))
			return false;
		if (des_celula == null) {
			if (other.des_celula != null)
				return false;
		} else if (!des_celula.equals(other.des_celula))
			return false;
		if (des_cidade == null) {
			if (other.des_cidade != null)
				return false;
		} else if (!des_cidade.equals(other.des_cidade))
			return false;
		if (des_comple == null) {
			if (other.des_comple != null)
				return false;
		} else if (!des_comple.equals(other.des_comple))
			return false;
		if (des_email == null) {
			if (other.des_email != null)
				return false;
		} else if (!des_email.equals(other.des_email))
			return false;
		if (des_endere == null) {
			if (other.des_endere != null)
				return false;
		} else if (!des_endere.equals(other.des_endere))
			return false;
		if (des_fone == null) {
			if (other.des_fone != null)
				return false;
		} else if (!des_fone.equals(other.des_fone))
			return false;
		if (des_fone2 == null) {
			if (other.des_fone2 != null)
				return false;
		} else if (!des_fone2.equals(other.des_fone2))
			return false;
		if (des_nome_razao == null) {
			if (other.des_nome_razao != null)
				return false;
		} else if (!des_nome_razao.equals(other.des_nome_razao))
			return false;
		if (des_pessoa_contat == null) {
			if (other.des_pessoa_contat != null)
				return false;
		} else if (!des_pessoa_contat.equals(other.des_pessoa_contat))
			return false;
		if (ide_inativ != other.ide_inativ)
			return false;
		if (ide_tipo_cadast == null) {
			if (other.ide_tipo_cadast != null)
				return false;
		} else if (!ide_tipo_cadast.equals(other.ide_tipo_cadast))
			return false;
		return true;
	}
	
}
